inline block (Terraform)
resourceの中で更にhoge {..}と書くやつ
別のresourseとしても定義できるものを中に書いている
記述を省略できる
結びつきも読みやすい
inline blockと別定義が両方あるとコンフリクトしてエラーになる
そのmoduleを参照する側が柔軟に変更できるようにするため
変更に開かれた状態になる
code:with inline block.tf
resource "aws_security_group" "alb" {
name = "${var.cluster_name}-alb"
# これとか
ingress {
from_port = local.http_port
to_port = local.http_port
protocol = local.tcp_protocol
cidr_blocks = local.all_ips
}
# これとか
egress {
from_port = local.any_port
to_port = local.any_port
protocol = local.any_protocol
cidr_blocks = local.all_ips
}
}
code:without inline block.tf
resource "aws_security_group" "alb" {
name = "${var.cluster_name}-alb"
}
resource "aws_security_group_rule" "allow_http_inbound" {
type = "ingress"
security_group_id = aws_security_group.alb.id
from_port = local.http_port
to_port = local.http_port
protocol = local.tcp_protocol
cidr_blocks = local.all_ips
}
resource "aws_security_group_rule" "allow_all_outbound" {
type = "egress"
security_group_id = aws_security_group.alb.id
from_port = local.any_port
to_port = local.any_port
protocol = local.any_protocol
cidr_blocks = local.all_ips
}